const { exec } = require('child_process');
const fs = require('fs');
const path = require('path');
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;

// 添加ffmpeg路径设置
process.env.FFMPEG_PATH = ffmpegPath;
console.debug('使用自定义的 ffmpegPath:', ffmpegPath);

// 设置临时目录
const TMP_DIR = path.join(__dirname, '/tmp') || '/tmp'

if (!fs.existsSync(TMP_DIR)) {
    fs.mkdirSync(TMP_DIR, { recursive: true });
}


/**
 * 增强版书本翻页效果视频生成
 * @param {object} config - 配置参数对象
 * @param {string} config.input1 - 第一张图片路径
 * @param {string} config.input2 - 第二张图片路径
 * @param {string} config.output - 输出视频路径
 * @param {number} [config.duration=3] - 每张图片显示时长(秒)
 * @param {number} [config.transitionDuration=1] - 过渡效果时长(秒)
 * @param {string} [config.transitionType='revealleft'] - 过渡效果类型
 */
function generateBookFlipVideo(config) {
  const { 
    input1, 
    input2, 
    output, 
    duration = 3, 
    transitionDuration = 1,
    transitionType = 'revealleft'
  } = config;
  
  const command = `ffmpeg -y -loop 1 -t ${duration} -i ${input1} \
    -loop 1 -t ${duration} -i ${input2} \
    -filter_complex "xfade=duration=${transitionDuration}:offset=${duration-transitionDuration}:transition=${transitionType}" \
    "${output}"`;
  
  console.log('执行命令:', command);
  
  exec(command, (error, stdout, stderr) => {
    if (error) {
      console.error('执行出错:', error);
      return;
    }
    console.log('视频生成成功:', output);
  });
}

// 使用示例
const config = {
  input1: 'test01.jpg',
  input2: 'test02.jpg',
  output:  path.join(TMP_DIR, 'output.mp4') ,
  duration: 2,
  transitionDuration: 0.5,
  // 动画效果类型，详见：https://trac.ffmpeg.org/wiki/Xfade#Gallery
  transitionType: 'slideleft'
};

generateBookFlipVideo(config);